package convert

import (
	"fmt"

	"github.com/bytedance/sonic"
)

// JsonStringify 将任意类型的值转换为JSON字符串。
//
// 参数:
//   - in: 要转换为JSON的值
//
// 返回值:
//   - success: 如果转换成功则为true，否则为false
//   - retStr: 转换后的JSON字符串，如果转换失败则包含错误信息
//
// 示例:
//
//	success, jsonStr := JsonStringify(map[string]interface{}{"name": "Alice", "age": 30})
//	// 返回 true, `{"name":"Alice","age":30}`
func JsonStringify(in interface{}) (success bool, retStr string) {
	jsonByte, err := sonic.Marshal(in)
	if err != nil {
		retStr = fmt.Sprintf(`{"errorType":"Data convert to JSON error","error": %s}`, err.Error())
	} else {
		retStr = string(jsonByte)
		success = true
	}

	return success, retStr
}
